Architecture symbolique

La composition symbolique du modèle permet de définir:
- Ses entrants et les variables réponse
- Sa structure
- Sa fonction objective (RMSE, MAE, Softmax, …)

data<- mx.symbol.Variable(name = "data")
final<- mx.symbol.FullyConnected(data=data, num_hidden=1, name = "final")
perte<- mx.symbol.LinearRegressionOutput(data=final, name = "perte_lineaire")

De la régression simple au deep learning

Aucun calcul n'est réalisé à cette étape. Seule la structure du modèle est définie afin de déterminer les dépendances de calculs aux fins d'optimisation de l'exécution et la gestion de la mémoire.

data<- mx.symbol.Variable(name = "data")
fc1<- mx.symbol.FullyConnected(data=data, num_hidden=4, name = "fc_1")
act1<- mx.symbol.Activation(data=fc1, act_type="relu", name = "act_1")
final<- mx.symbol.FullyConnected(data=act1, num_hidden=1, name = "final")
perte<- mx.symbol.LinearRegressionOutput(data=final, name = "perte_lineaire")

Du symbole au calcul

Une fois la structure du modèle définie, il reste à définir les composantes qui permettront à l'algorithme de s'exécuter sur les données réelles.

  • Itérateur de données: module dont l'exécution renvoie les données entrantes les variables réponse.

  • Optimiseur: module qui définit la façon dont les paramètres sont mis à jour à chaque itération.

  • Exécuteur: instance qui exécute les calculs. Il peut y en avoir un seul (CPU) ou plusieurs (multi-GPU).

  • Initialisation: spécifie la manière dont sont assignés les paramètres avant l'exécution de l'optimisation:
    • Normal
    • Uniforme
    • Xavier

Du symbole au calcul - example d'application sur une régression

Itérateur de données

La tâche de l'itérateur est de fournir aux exécuteurs les données nécessaires aux calculs pour chacune des itérations sur les mini-batch.

Les itérateurs pré-définis sont:

  • mx.io.arrayiter: itérateur prenant un objet array comme entrée
  • mx.io.CSVIter: lecture d'un CSV
  • mx.io.ImageRecordIter: lecture d'images en format binaire

Des itérateurs personnalisés peuvent être construits directement en R, leur performance dépend des fonctionnalités sous-jacentes.

À noter que l'utilisation d'itérateurs sur des CSV ou images permet d'éviter la contrainte de charger la totalité des données en mémoire.

Sélection de l'optimiseur

Exécution sur plusieurs instances (multi_GPU)

Régression linéaire

Boston dataset?

Réutilisation et ajustement de modèles pré-entraînés

Une collection de modèles est disponible dans le zoo

Un utilitaire existe également pour convertir des modèles développés sous Caffe.

Exemple: Chat vs Chien avec Resnet Microsoft 2015

Pour pousser plus loin

  • Adversial model

  • Reinforcement learning